Adicionando filtros dinamicamente, de forma simples, na sua expressão lambda
O objetivo desse post é expor uma solução que torne fluida e simples a escrita de filtros dinâmicos Imagine que, dado uma determinada condição, você...O objetivo desse post é expor uma solução que torne fluida e simples a escrita de filtros dinâmicos.
Imagine que, dado uma determinada condição, você quer adicionar um filtro a sua query.
Uma das primeiras implementações que você chegaria, provavelmente, seria algo parecido com o exemplo acima. Várias estruturas condicionais, uma seguida da outra, adicionando ou não um filtro a query.
Bem, imagino que você já deve ter torcido o nariz em pensar como esse código não ficaria tão bem escrito.
Após algumas pesquisas, cheguei em uma solução que considero bem interessante, simplificando a escrita e deixando o código bem mais fluido. Veja o exemplo:
Basicamente, criei um Extension Method para um IQueryable<T>, que recebe dois parâmetros:
- O primeiro é uma Func<bool> que terá o resultado da condição aplicada
- O segundo é uma Expression<Func<T,bool>> que será o filtro aplicado na query.
Dessa forma, eu tenho um método de extensão, genérico, que me permite adicionar filtros dinâmicos a minha query além de utilizar todos os métodos da biblioteca do system.Linq em uma unica linha.
Espero que tenha ajudado, até a proxima!